<template>
  <atom-table
  v-if="attrs&&show"
    :ref="ref"
    :data="data"
    v-bind="attrs"
    :navigation="navigation"
    @loadPage="loadPage"
    @handleEdit="handleEdit"
    @handleDelete="handleDelete"
    @handleDetail="handleDetail"
    @handleClick="handleClick"
    @handleDbClick="handleDbClick"
    @handleCreate="handleCreate"
    @handleDeleteMultiple="handleDeleteMultiple"
    @handleSearch="handleSearch"
    @handleReset="handleReset"
  ></atom-table>
</template>

<script>
const ref = "mainTable";
export default {
  name: ref,
  components: {},
  inject: ["anc"],
  data() {
    return {
      ref,
      loading: false,
      navigation: {
        show: true,
        opts: [10, 30, 50, 100],
        page: { total: 0, pageSize: 10, pageNumber: 1 },
      },
      attrs: null,
      show:false,
    };
  },
  props: {
    data: {
      default: () => {
        return [];
      },
    },
  },
  watch: {},
  computed: {
    // attrs() {
    //   return {
    //     query: {
    //       show: true,
    //       labelWidth: 100, //label宽度
    //       labelPosition: "right", //label位置
    //       cols: 4, //一行几列
    //       onlyRead: false, //是否只读
    //       collapse: true,
    //       columns: [
    //         {
    //           title: "产品名称", //字段标题
    //           key: "productId", //字段key
    //           line: false, //是否独占一行
    //           titleStyle: {},
    //           default: {
    //             value: "",
    //             empty: false,
    //             logic: "&&",
    //             operator: ">",
    //           },
    //           tip: {
    //             icon: "",
    //             size: 16,
    //             iconStyle: {},
    //             theme: "light",
    //             placement: "top",
    //             content: "",
    //             contentStyle: {},
    //           },
    //           config: {
    //             //编辑器配置，可以是函数，参数为(item,index,data)
    //             editor: {
    //               //编辑器配置
    //               type: "select", //编辑器类型
    //               options: this.anc.productOptions,
    //             },
    //             style: {
    //               //样式配置
    //             },
    //           },
    //           // rules: [
    //           //   {
    //           //     required: false,
    //           //     type: "string",
    //           //     message: "必填",
    //           //     trigger: ["change", "blur"],
    //           //   },
    //           // ],
    //         },
    //         {
    //           title: "设备", //字段标题
    //           key: "equipId", //字段key
    //           line: false, //是否独占一行
    //           titleStyle: {},
    //           default: {
    //             value: "",
    //             empty: false,
    //             logic: "&&",
    //             operator: ">",
    //           },
    //           tip: {
    //             icon: "",
    //             size: 16,
    //             iconStyle: {},
    //             theme: "light",
    //             placement: "top",
    //             content: "",
    //             contentStyle: {},
    //           },
    //           config: {
    //             //编辑器配置，可以是函数，参数为(item,index,data)
    //             editor: {
    //               //编辑器配置
    //               type: "select", //编辑器类型
    //               options: this.anc.equipTypeOptions,
    //             },
    //             style: {
    //               //样式配置
    //             },
    //           },
    //           // rules: [
    //           //   {
    //           //     required: false,
    //           //     type: "string",
    //           //     message: "必填",
    //           //     trigger: ["change", "blur"],
    //           //   },
    //           // ],
    //         },
    //         {
    //           title: "是否超限", //字段标题
    //           key: "isOverLimit", //字段key
    //           line: false, //是否独占一行
    //           titleStyle: {},
    //           default: {
    //             value: "",
    //             empty: false,
    //             logic: "&&",
    //             operator: ">",
    //           },
    //           tip: {
    //             icon: "",
    //             size: 16,
    //             iconStyle: {},
    //             theme: "light",
    //             placement: "top",
    //             content: "",
    //             contentStyle: {},
    //           },
    //           config: {
    //             //编辑器配置，可以是函数，参数为(item,index,data)
    //             editor: {
    //               //编辑器配置
    //               type: "select", //编辑器类型
    //               options: [
    //                 {
    //                   value: "是",
    //                   label: "是",
    //                 },
    //                 {
    //                   value: "否",
    //                   label: "否",
    //                 },
    //               ],
    //             },
    //             style: {
    //               //样式配置
    //             },
    //           },
    //           // rules: [
    //           //   {
    //           //     required: false,
    //           //     type: "string",
    //           //     message: "必填",
    //           //     trigger: ["change", "blur"],
    //           //   },
    //           // ],
    //         },
    //         // {
    //         //   title: "通知接收人", //字段标题
    //         //   key: "notificationRecipient", //字段key
    //         //   line: false, //是否独占一行
    //         //   titleStyle: {},
    //         //   default: {
    //         //     value: "",
    //         //     empty: false,
    //         //     logic: "&&",
    //         //     operator: ">",
    //         //   },
    //         //   tip: {

    //         //   },
    //         //   config: {
    //         //     //编辑器配置，可以是函数，参数为(item,index,data)
    //         //     editor: {
    //         //       //编辑器配置
    //         //       type: "text", //编辑器类型
    //         //     },
    //         //     style: {
    //         //       //样式配置
    //         //     },
    //         //   },

    //         // },
    //         // {
    //         //   title: "通知接收时间", //字段标题
    //         //   key: "notificationTime", //字段key
    //         //   line: false, //是否独占一行
    //         //   titleStyle: {},
    //         //   default: {
    //         //     value: "",
    //         //     empty: false,
    //         //     logic: "&&",
    //         //     operator: ">",
    //         //   },
    //         //   tip: {

    //         //   },
    //         //   config: {
    //         //     //编辑器配置，可以是函数，参数为(item,index,data)
    //         //     editor: {
    //         //       //编辑器配置
    //         //       type: "datetime", //编辑器类型
    //         //     },
    //         //     style: {
    //         //       //样式配置
    //         //     },
    //         //   },

    //         // },
    //         // {
    //         //   title: "通知确认时间", //字段标题
    //         //   key: "notificationConfirmTime", //字段key
    //         //   line: false, //是否独占一行
    //         //   titleStyle: {},
    //         //   default: {
    //         //     value: "",
    //         //     empty: false,
    //         //     logic: "&&",
    //         //     operator: ">",
    //         //   },
    //         //   tip: {

    //         //   },
    //         //   config: {
    //         //     //编辑器配置，可以是函数，参数为(item,index,data)
    //         //     editor: {
    //         //       //编辑器配置
    //         //       type: "datetime", //编辑器类型
    //         //     },
    //         //     style: {
    //         //       //样式配置
    //         //     },
    //         //   },

    //         // },
    //       ], //字段列表
    //       rules: {},
    //     },
    //     queryData: {}, //数据
    //     table: {
    //       config: {
    //         autoHeight: true,
    //         stripe: true, //条纹
    //         size: "default", //尺寸
    //         loading: false, //是否加载
    //         rowClassName: "", //行样式
    //         tableHeight: "auto", //表高
    //         style: {},
    //         checkColumn: false,
    //         numberColumn: true,
    //         action: false,
    //         additionalAction: false,
    //         sort: {
    //           asc: [],
    //           desc: [],
    //         },
    //         actionFn: (row, column, index, item) => {
    //           return true;
    //         },
    //         additionalActionFn: (row, column, index, item) => {
    //           // if(row.name==='panhao'){
    //           //   item['disabled'] = true;
    //           // }else{
    //           //   item['disabled'] = false;
    //           // }
    //           return true;
    //         },
    //       },
    //       columns: [
    //         // {
    //         //   title: "产品ID", //字段标题
    //         //   key: "productId", //字段key
    //         //   width: "auto",
    //         //   align: "center",
    //         //   show: true,
    //         //   sort: "asc",
    //         // },
    //         {
    //           title: "产品名称", //字段标题
    //           key: "productName", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         // {
    //         //   title: "设备ID", //字段标题
    //         //   key: "equipId", //字段key
    //         //   width: "auto",
    //         //   align: "center",
    //         //   show: true,
    //         //   sort: "asc",
    //         // },
    //         {
    //           title: "设备名称", //字段标题
    //           key: "equipName", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         // {
    //         //   title: "参数ID", //字段标题
    //         //   key: "paramId", //字段key
    //         //   width: "auto",
    //         //   align: "center",
    //         //   show: true,
    //         //   sort: "asc",
    //         // },
    //         {
    //           title: "参数名称", //字段标题
    //           key: "paramName", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "参数单位", //字段标题
    //           key: "unit", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "最大阈值", //字段标题
    //           key: "maxParam", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "最小阈值", //字段标题
    //           key: "minParam", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "采集实际值", //字段标题
    //           key: "actual", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "采集时间", //字段标题
    //           key: "collectionTime", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           title: "是否超限", //字段标题
    //           key: "isOverLimit", //字段key
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           key: "createTime",
    //           title: "创建时间",
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           key: "createdBy",
    //           title: "创建人",
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           key: "updateTime",
    //           title: "修改时间",
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //         {
    //           key: "updatedBy",
    //           title: "修改人",
    //           width: "auto",
    //           align: "center",
    //           show: true,
    //           sort: "asc",
    //         },
    //       ],
    //       additionalAction: {
    //         key: "additionalAction",
    //         title: "additionalAction",
    //         slot: "additionalAction",
    //         width: 200,
    //         fixed: "right",
    //         align: "center",
    //         buttons: [
    //           {
    //             title: "abc", //按钮标题
    //             style: {}, //按钮样式
    //             event: (row, column, index, item) => {}, //按钮事件
    //           },
    //         ],
    //       },
    //     },
    //     // navigation: {
    //     //   show: true,
    //     //   opts: [10, 30, 50, 100],
    //     //   page: { total: 0, pageSize: 10, pageNumber: 1 },
    //     // },
    //     tools: {
    //       addButton: false,
    //       batchDeleteButton: false,
    //       searchIcon: true,
    //       downloadIcon: true,
    //       uploadIcon: true,
    //       uploadUrl: "/",
    //       tableSizeIcon: true,
    //       fullscreenIcon: true,
    //       refreshIcon: true,
    //       columnSettingIcon: true,
    //       columnSortIcon: true,
    //       buttons: [
    //         // {
    //         //   title: "abc",
    //         //   event: (btn) => {
    //         //     console.log(btn);
    //         //   },
    //         // },
    //       ],
    //     },
    //   };
    // },
  },
  created() {},
  mounted() {
    this.$nextTick(() => {
      this.$set(this.anc.vms, this.ref, this);

      this.loadPage(this.navigation.page, {});
    });
  },
  methods: {
    
    beforePageInit() {
      this.attrs = this.attrsTpl();
      this.show = true;
    },
    attrsTpl() {
      return {
        query: {
          show: true,
          labelWidth: 100, //label宽度
          labelPosition: "right", //label位置
          cols: 4, //一行几列
          onlyRead: false, //是否只读
          collapse: true,
          columns: [
            {
              title: "产品名称", //字段标题
              key: "productId", //字段key
              line: false, //是否独占一行
              titleStyle: {},
              default: {
                value: "",
                empty: false,
                logic: "&&",
                operator: ">",
              },
              tip: {
                icon: "",
                size: 16,
                iconStyle: {},
                theme: "light",
                placement: "top",
                content: "",
                contentStyle: {},
              },
              config: {
                //编辑器配置，可以是函数，参数为(item,index,data)
                editor: {
                  //编辑器配置
                  type: "select", //编辑器类型
                  options: this.anc.productOptions,
                },
                style: {
                  //样式配置
                },
              },
              // rules: [
              //   {
              //     required: false,
              //     type: "string",
              //     message: "必填",
              //     trigger: ["change", "blur"],
              //   },
              // ],
            },
            {
              title: "设备", //字段标题
              key: "equipId", //字段key
              line: false, //是否独占一行
              titleStyle: {},
              default: {
                value: "",
                empty: false,
                logic: "&&",
                operator: ">",
              },
              tip: {
                icon: "",
                size: 16,
                iconStyle: {},
                theme: "light",
                placement: "top",
                content: "",
                contentStyle: {},
              },
              config: {
                //编辑器配置，可以是函数，参数为(item,index,data)
                editor: {
                  //编辑器配置
                  type: "select", //编辑器类型
                  options: this.anc.equipTypeOptions,
                },
                style: {
                  //样式配置
                },
              },
              // rules: [
              //   {
              //     required: false,
              //     type: "string",
              //     message: "必填",
              //     trigger: ["change", "blur"],
              //   },
              // ],
            },
            {
              title: "是否超限", //字段标题
              key: "isOverLimit", //字段key
              line: false, //是否独占一行
              titleStyle: {},
              default: {
                value: "",
                empty: false,
                logic: "&&",
                operator: ">",
              },
              tip: {
                icon: "",
                size: 16,
                iconStyle: {},
                theme: "light",
                placement: "top",
                content: "",
                contentStyle: {},
              },
              config: {
                //编辑器配置，可以是函数，参数为(item,index,data)
                editor: {
                  //编辑器配置
                  type: "select", //编辑器类型
                  options: [
                    {
                      value: "是",
                      label: "是",
                    },
                    {
                      value: "否",
                      label: "否",
                    },
                  ],
                },
                style: {
                  //样式配置
                },
              },
              // rules: [
              //   {
              //     required: false,
              //     type: "string",
              //     message: "必填",
              //     trigger: ["change", "blur"],
              //   },
              // ],
            },
            // {
            //   title: "通知接收人", //字段标题
            //   key: "notificationRecipient", //字段key
            //   line: false, //是否独占一行
            //   titleStyle: {},
            //   default: {
            //     value: "",
            //     empty: false,
            //     logic: "&&",
            //     operator: ">",
            //   },
            //   tip: {

            //   },
            //   config: {
            //     //编辑器配置，可以是函数，参数为(item,index,data)
            //     editor: {
            //       //编辑器配置
            //       type: "text", //编辑器类型
            //     },
            //     style: {
            //       //样式配置
            //     },
            //   },

            // },
            // {
            //   title: "通知接收时间", //字段标题
            //   key: "notificationTime", //字段key
            //   line: false, //是否独占一行
            //   titleStyle: {},
            //   default: {
            //     value: "",
            //     empty: false,
            //     logic: "&&",
            //     operator: ">",
            //   },
            //   tip: {

            //   },
            //   config: {
            //     //编辑器配置，可以是函数，参数为(item,index,data)
            //     editor: {
            //       //编辑器配置
            //       type: "datetime", //编辑器类型
            //     },
            //     style: {
            //       //样式配置
            //     },
            //   },

            // },
            // {
            //   title: "通知确认时间", //字段标题
            //   key: "notificationConfirmTime", //字段key
            //   line: false, //是否独占一行
            //   titleStyle: {},
            //   default: {
            //     value: "",
            //     empty: false,
            //     logic: "&&",
            //     operator: ">",
            //   },
            //   tip: {

            //   },
            //   config: {
            //     //编辑器配置，可以是函数，参数为(item,index,data)
            //     editor: {
            //       //编辑器配置
            //       type: "datetime", //编辑器类型
            //     },
            //     style: {
            //       //样式配置
            //     },
            //   },

            // },
          ], //字段列表
          rules: {},
        },
        queryData: {}, //数据
        table: {
          config: {
            autoHeight: true,
            stripe: true, //条纹
            size: "default", //尺寸
            loading: false, //是否加载
            rowClassName: "", //行样式
            tableHeight: "auto", //表高
            style: {},
            checkColumn: false,
            numberColumn: true,
            action: false,
            additionalAction: false,
            sort: {
              asc: [],
              desc: [],
            },
            actionFn: (row, column, index, item) => {
              return true;
            },
            additionalActionFn: (row, column, index, item) => {
              // if(row.name==='panhao'){
              //   item['disabled'] = true;
              // }else{
              //   item['disabled'] = false;
              // }
              return true;
            },
          },
          columns: [
            // {
            //   title: "产品ID", //字段标题
            //   key: "productId", //字段key
            //   width: "auto",
            //   align: "center",
            //   show: true,
            //   sort: "asc",
            // },
            {
              title: "产品名称", //字段标题
              key: "productName", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            // {
            //   title: "设备ID", //字段标题
            //   key: "equipId", //字段key
            //   width: "auto",
            //   align: "center",
            //   show: true,
            //   sort: "asc",
            // },
            {
              title: "设备名称", //字段标题
              key: "equipName", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            // {
            //   title: "参数ID", //字段标题
            //   key: "paramId", //字段key
            //   width: "auto",
            //   align: "center",
            //   show: true,
            //   sort: "asc",
            // },
            {
              title: "参数名称", //字段标题
              key: "paramName", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "参数单位", //字段标题
              key: "unit", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "最大阈值", //字段标题
              key: "maxParam", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "最小阈值", //字段标题
              key: "minParam", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "采集实际值", //字段标题
              key: "actual", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "采集时间", //字段标题
              key: "collectionTime", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              title: "是否超限", //字段标题
              key: "isOverLimit", //字段key
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              key: "createTime",
              title: "创建时间",
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              key: "createdBy",
              title: "创建人",
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              key: "updateTime",
              title: "修改时间",
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
            {
              key: "updatedBy",
              title: "修改人",
              width: "auto",
              align: "center",
              show: true,
              sort: "asc",
            },
          ],
          additionalAction: {
            key: "additionalAction",
            title: "additionalAction",
            slot: "additionalAction",
            width: 200,
            fixed: "right",
            align: "center",
            buttons: [
              {
                title: "abc", //按钮标题
                style: {}, //按钮样式
                event: (row, column, index, item) => {}, //按钮事件
              },
            ],
          },
        },
        // navigation: {
        //   show: true,
        //   opts: [10, 30, 50, 100],
        //   page: { total: 0, pageSize: 10, pageNumber: 1 },
        // },
        tools: {
          addButton: false,
          batchDeleteButton: false,
          searchIcon: true,
          downloadIcon: true,
          uploadIcon: true,
          uploadUrl: "/",
          tableSizeIcon: true,
          fullscreenIcon: true,
          refreshIcon: true,
          columnSettingIcon: true,
          columnSortIcon: true,
          buttons: [
            // {
            //   title: "abc",
            //   event: (btn) => {
            //     console.log(btn);
            //   },
            // },
          ],
        },
      };
    },
    loadPage(pageNavigation, filter, orderBy = {}) {
      //   //删除查询项中属性值为空的查询条件
      this.anc.loadPage(pageNavigation, filter, orderBy);
    },
    handleEdit(row, index) {
      console.log(row, index);
      this.anc.handleEdit(row, index);
    },
    handleDelete(row, index) {
      this.anc.handleDelete(row, index);
    },
    handleDetail(row, index) {
      this.anc.handleDetail(row);
    },
    handleClick(row, index) {},
    handleDbClick(row, index) {},
    handleDeleteMultiple(selection) {},
    handleSearch(filter) {
      this.navigation.pageNumber = 1;
      this.loadPage(this.navigation.page, filter);
    },
    handleReset(data, completeData, defaultData) {
      this.navigation.pageNumber = 1;
      this.queryData = {};
      this.loadPage(this.navigation.page, {});
    },
    handleCreate() {
      this.anc.handleCreate();
    },
  },
};
</script>
<style scoped></style>
